const download = ({ url, fileName, methods = 'GET', headers, data, params }: { url: string; fileName: string; methods?: string; headers?: Record<string, string>; data?: any; params?: Record<string, any> }) => {
	if (params) {
		url +=
			'?' +
			Object.keys(params)
				.map(key => {
					return `${key}=${params[key]}`;
				})
				.join('&');
	}
	fetch(url, {
		method: methods,
		headers: {
			'Content-Type': 'application/json', // 设置请求头，根据需要修改
			// 可能需要其他的请求头信息，根据实际情况添加
			...headers,
		},
		body: JSON.stringify(data),
	})
		.then(response => {
			// 获取文件名
			// fileName =
			// 	fileName || getFilenameFromContentDisposition(response.headers.get('content-disposition'));

			// 使用 Blob 或者其他方式处理响应数据
			return response.blob();
		})
		.then(blob => {
			// 创建一个新的 URL 对象
			const url = window.URL.createObjectURL(blob);

			// 创建一个 <a> 元素
			const a = document.createElement('a');
			a.href = url;

			// 设置下载属性
			a.download = fileName;

			// 模拟点击下载
			document.body.appendChild(a);
			a.click();

			// 清理 URL 对象
			window.URL.revokeObjectURL(url);
		})
		.catch(error => {
			console.error('发生错误：', error);
		});

	// 从 content-disposition 中获取文件名
};

// 从 content-disposition 中获取文件名
// function getFilenameFromContentDisposition(contentDisposition) {
// 	const match = contentDisposition.match(
// 		/filename\*?=['"]?(?:UTF-\d['"]*)?([^;\r\n"']*)['"]?(?:;|$)/i,
// 	);
// 	if (match && match[1]) {
// 		return match[1];
// 	} else {
// 		const filenameRegex = /filename[^;=\n]*=((['"]).*?\2|[^;\n]*)/;
// 		const matches = filenameRegex.exec(contentDisposition);
// 		if (matches != null && matches[1]) {
// 			return matches[1].replace(/['"]/g, '');
// 		} else {
// 			return 'unknown';
// 		}
// 	}
// }
export default download;
